第9章 デジタル署名
デジタル署名の仕組み
table:公開鍵とデジタル署名の鍵の使い方
プライベート鍵 公開鍵
公開鍵暗号 受信者が復号に使う 送信者たちが暗号化に使う
鍵は誰が持つ? 個人が持つ 必要な人は誰でも持っていて良い
プライベート鍵による暗号文を署名として扱うことで、デジタル署名は誰でも署名の検証ができる。
署名方法
メッセージに直接署名する方法
1. 送信者が自分のプレイベート鍵でメッセージを暗号化
2. 送信者はメッセージと署名を送信する。
3. 受信者は受信した署名を送信者の公開鍵で復号する
4. 受信者は署名を復号して得られたメッセージと、送信者から直接受信したメッセージを比較する。
メッセージのハッシュ値に署名する方法
1. 送信者は一方向ハッシュ関数でメッセージのハッシュ値を計算する。
2. 送信者は自分の秘密鍵でハッシュ値を暗号化する。
3. 送信者はメッセージと署名を送信する。
4. 受信者は受信した署名を送信者の公開鍵で復号する。
5. 受信者は受信した署名から得られたハッシュ値と受信者から直接受信したメッセージのハッシュ値とを比較する。
使用例
セキュリティ情報のアナウンス
ソフトウェアのダウンロード
公開鍵の証明書
SSL/TLS
攻撃方法
中間者攻撃
一方向ハッシュ関数に対する攻撃
デジタル署名を使って公開鍵暗号を攻撃
潜在的偽造
署名対象が意味のないメッセージでも正しいデジタル署名を作ること。
メッセージ認証コードとデジタル署名の比較
table:対称暗号と公開鍵暗号の比較
対称暗号 公開鍵暗号
送信者 共有鍵で暗号化 公開鍵で暗号化
受信者 共有鍵で復号 秘密鍵で復号
鍵配送問題 起きる おきないが公開鍵の認証が別途必要
機密性 ⭕️ ⭕️
table:メッセージ認証コードとデジタル署名の比較
メッセージ認証コード デジタル署名
送信者 共有鍵でMAC値を計算 秘密鍵で署名を作成
受信者 共有鍵でMAC値を計算 公開鍵で署名を検証
鍵配送問題 起きる おきないが公開鍵の認証が別途必要
正真性 ⭕️ ⭕️
認証 ⭕️(通信相手に対してのみ) ⭕️(第三者に対しても)
否認防止 ❌ ⭕️
デジタル署名で解決できない問題
公開鍵が本物であること
証明書で正しい公開鍵であることを保証する。
成立するために公開鍵基盤が必要になる。